load("//tools/buck:rust_cxx_bridge.bzl", "rust_cxx_bridge")

rust_test(
    name = "test",
    srcs = ["test.rs"],
    edition = "2021",
    deps = [
        ":ffi",
        "//:cxx",
    ],
)

rust_library(
    name = "ffi",
    srcs = [
        "ffi/cast.rs",
        "ffi/lib.rs",
        "ffi/module.rs",
    ],
    crate = "cxx_test_suite",
    edition = "2021",
    deps = [
        ":impl",
        "//:cxx",
        "//third-party:serde",
    ],
)

cxx_library(
    name = "impl",
    srcs = [
        "ffi/tests.cc",
        ":bridge/source",
        ":module/source",
    ],
    exported_deps = ["//:core"],
    exported_headers = [
        ":bridge/header",
        ":module/header",
        "ffi/tests.h",
    ],
    preferred_linkage = "static",
)

rust_cxx_bridge(
    name = "bridge",
    src = "ffi/lib.rs",
    deps = [
        ":impl",
    ],
)

rust_cxx_bridge(
    name = "module",
    src = "ffi/module.rs",
    deps = [
        ":impl",
    ],
)
